package com.acxy.pay.weixin;

import java.math.BigInteger;
import java.util.TreeMap;

/**
 * 具体详情看同一订单此处和同一订单对应
 * TreeMap带排序功能
 * @author MrShun
 * @version 1.0
 * @Date 2017-11-05
 */
public class PayParams extends TreeMap {

    private PayParams() {
    }

    public static <K, V> PayParams newPayParams() {
        return new PayParams();
    }

    public PayParams setAppId(String appid) {
        put("appid", appid);
        return this;
    }

    public PayParams setMchId(String mch_id) {
        put("mch_id", mch_id);
        return this;
    }

    public PayParams setDeviceInfo(String device_info){
        put("device_info", device_info);
        return this;
    }

    public PayParams setNonceStr(String nonce_str) {
        put("nonce_str", nonce_str);
        return this;
    }

    public PayParams setSign(String sign) {
        put("sign", sign);
        return this;
    }

    public PayParams setSignType(String sign_type) {
        put("sign_type", sign_type);
        return this;
    }

    public PayParams setBody(String body) {
        put("body", body);
        return this;
    }

    public PayParams setDetail(String detail) {
        put("detail", detail);
        return this;
    }


    public PayParams setAttach(String attach) {
        put("attach", attach);
        return this;
    }

    public PayParams setOutTradeNo(String out_trade_no) {
        put("out_trade_no", out_trade_no);
        return this;
    }

    public PayParams setFeeType(String fee_type) {
        put("fee_type", fee_type);
        return this;
    }

    public PayParams setTotalFee(BigInteger total_fee) {
        put("total_fee", total_fee);
        return this;
    }

    public PayParams setSpbillCreateIp(String spbill_create_ip) {
        put("spbill_create_ip", spbill_create_ip);
        return this;
    }

    public PayParams setTimeStart(String time_start) {
        put("time_start", time_start);
        return this;
    }

    public PayParams setTimeExpire(String time_expire) {
        put("time_expire", time_expire);
        return this;
    }

    public PayParams setGoodsTag(String goods_tag) {
        put("goods_tag", goods_tag);
        return this;
    }

    public PayParams setNotifyUrl(String notify_url) {
        put("notify_url", notify_url);
        return this;
    }

    public PayParams setTradeType(PayType trade_type) {
        put("trade_type", trade_type);
        return this;
    }

    public PayParams setProductId(String product_id) {
        put("product_id", product_id);
        return this;
    }


    public PayParams setTradeLimitPay(String limit_pay) {
        put("limit_pay", limit_pay);
        return this;
    }

    public PayParams setOpenId(Object openid) {
        put("openid", openid);
        return this;
    }


    public PayParams setSceneInfo(String scene_info) {
        put("scene_info", scene_info);
        return this;
    }

}
